<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* .box{} */

        /* .list li:nth-child(1){} */

        /* div[clsss='box']{

        } */
    </style>
</head>

<body>
    <div class="box">
        123123123
    </div>
</body>
<script>
    // debugger;

    // try...catch => 
    // 优点: 获取代码执行过程中出现的错误,且不影响后续代码的执行
    // 缺点:只能捕获同步代码在执行过程中出现的错误   => try...catch 属于同步任务 => 在主线程上直接执行 => 等异步代码执行时,try...catch早已经执行完毕了 => 没有办法捕获异步错误

    // 解决方法: 在异步代码中进行try....catch捕获,等异步代码执行时,进行捕获

    /* try {
        console.log("测试代码开始执行");
        var a = 10;
        var b = 20;
        var c = a + B;
        console.log(c);
    } catch (err) {  // err => 错误对象(new Error()   => {message})
        console.log(err);
        // throw err;
    } finally {
        console.log("测试代码执行完毕");
    }

    for (var i = 0; i < 6; i++) {
        console.log(i);
    } */

    try {
        console.log("测试代码开始执行");
        setTimeout(() => {
            try{
                console.log("异步代码开始执行");
                var a = 10;
                var b = 20;
                var c = a + B;
                console.log(c);
            }catch(err){
                console.log("err", err);
            }finally{
                console.log("异步代码执行完毕");
            }
        }, 1000)
    } catch (err) {  // err => 错误对象(new Error()   => {message})
        console.log(err);
        // throw err;
    } finally {
        console.log("测试代码执行完毕");
    }

    for (var i = 0; i < 6; i++) {
        console.log(i);
    }


</script>

</html>